package main

import (
	"fmt"
	"time"
)

// 计算两个日期之间的天数差
func daysBetween(start, end time.Time) int {
	return int(end.Sub(start).Hours() / 24)
}

// 获取当前年龄（以天为单位）
func getCurrentAgeInDays(birthDate time.Time) int {
	now := time.Now()
	return daysBetween(birthDate, now)
}

// 计算剩余寿命（以天为单位），根据性别的不同设定预期寿命
func getRemainingLifeInDays(birthDate time.Time, gender string) int {
	var maxAgeDays int
	if gender == "男" {
		maxAgeDays = 78*365 + 19 // 78年加上19个闰日
	} else if gender == "女" {
		maxAgeDays = 82*365 + 20 // 82年加上20个闰日
	} else {
		fmt.Println("未知性别，默认按80岁计算")
		maxAgeDays = 80*365 + 20 // 默认80年加上20个闰日
	}
	currentAgeDays := getCurrentAgeInDays(birthDate)
	if currentAgeDays >= maxAgeDays {
		return 0
	}
	return maxAgeDays - currentAgeDays
}

func main() {
	var birthYear, birthMonth, birthDay int
	var gender string

	fmt.Println("请输入您的出生年份:")
	fmt.Scan(&birthYear)
	fmt.Println("请输入您的出生月份:")
	fmt.Scan(&birthMonth)
	fmt.Println("请输入您的出生日期:")
	fmt.Scan(&birthDay)
	fmt.Println("请输入您的性别 (男/女):")
	fmt.Scan(&gender)

	birthDate := time.Date(birthYear, time.Month(birthMonth), birthDay, 0, 0, 0, 0, time.UTC)

	currentAgeDays := getCurrentAgeInDays(birthDate)
	remainingDays := getRemainingLifeInDays(birthDate, gender)

	fmt.Printf("您已经在这个世界上度过了 %d 天。\n", currentAgeDays)
	fmt.Printf("按照%s性的预期寿命计算，您还有大约 %d 天即将离开这个世界。\n", gender, remainingDays)
}